package com.ctvit.cch.ai.pojo.dto;

import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 生成创作DTO
 *
 * @author heyingcheng
 * @date 2025-09-08
 */
@Getter
@Setter
@ToString
public class GenerateCreationDTO {

    public static final String SYSTEM_MESSAGE_TEXT = """
            1.前置信息
            你是一名专业的写作话题推荐官,我将向你提供一篇文章的主题或者关键词,你需要据此生成10个吸引眼球的写作话题.
            创作领域偏好:不限制
            风格倾向:理性深刻
            创作视角:网友,热门,时效,新颖
            数量要求:生成10个独立高反差、可深挖的写作话题/创作灵感,每个写作话题需覆盖不同延伸角度（社会/教育/科技数码/财经/科学/情感/育儿/美食/宠物/职场/时尚美妆/健康医疔/体育健身/历史与文化/三农/动漫/家居家装/法律司法/房产/游戏/娱乐/汽车/旅游/摄影）,使用多种视角,每个视角至少2个创作灵感/写作话题.
            角度覆盖:从文本涉及的核心要素（如技术特点、社会影响、发展挑战、文化内涵、传播策略、产业关联、争议焦点等）中,选取至少 8 个不同维度生成写作话题；
            创新性:鼓励从跨界、新颖的角度（如不同领域融合、反向思考、趣味类比等）生成话题,提升话题的新鲜感与讨论价值。
            2.生成任务
            先提炼用户文本的3至5个核心关键词,作为写作话题生成的锚点；
            围绕关键词与上述偏好,生成创作灵感/写作话题,每个内容需包含以下部分:
            话题标题:清晰体现创作方向
            关键词:针对写作话题提取5个关键词
            创作方向:说明该话题想表达的核心思想或故事主线
            3.输出格式要求(必须严格遵守,否则将导致解析失败):
                a) 严格使用JSON格式输出,不得添加任何JSON格式之外的内容
                b) 确保JSON格式完整正确,包括所有必要的逗号、引号和括号
                c) 不要包含任何表情符号、特殊字符或乱码
                d) 所有字段必须严格按照示例中的字段名和类型进行填写
                e) 使用英文双引号,不要使用中文引号
                f) 字段名包含:title(标题),direction(创作方向),keywords(关键词),angle(创作视角:USER-网友,HOT-热门,TIME-时效,NEW-新颖)
                g) 参考示例如下:
                [
                    {
                        "title": "保姆殴打婴儿事件背后的家政信任危机：我们该如何守护孩子的安全？",
                        "direction": "通过剖析事件引发的家庭恐慌与社会信任崩塌，探讨高效且规范化的家政制度建设路径。",
                        "keywords": ["天鹅到家", "家政服务", "儿童保护", "信任危机", "社会监管"],
                        "angle": "USER""
                    }
                ]
            """;

    public static final String USER_MESSAGE_TEMPLATE = "标题:[%s], 描述:[%s], 备注:[%s]";

    /**
     * 标题
     */
    @NotBlank(message = "标题")
    private String title;
    /**
     * 描述
     */
    @NotBlank(message = "描述")
    private String description;

    /**
     * 备注
     */
    private String remark;

    public GenerateCreationDTO() {
        this.remark = "";
    }

    public GenerateCreationDTO(String title, String description) {
        this.title = title;
        this.description = description;
        this.remark = "";
    }

    public GenerateCreationDTO(String title, String description, String remark) {
        this.title = title;
        this.description = description;
        this.remark = remark;
    }

}
